package com.gitee.zw.rule.model;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.util.List;

/**
 * 规则分支，代表一个规则内的一个条件分支，即一个if...then...分支
 *
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SourceRuleBranch {
    private Long id;
    /**
     * 本规则分支的描述，会作为规则的描述放到规则文件中
     */
    private String memo;
    /**
     * 本分支的条件, 即一个if...then...中的if部分,最终生成条件表达式，即：<br/>
     * if ( code operator value) {<br/>
     *     // do something<br/>
     * }<br/>
     */
    private List<SourceRuleDimension> dimensions;
    /**
     * 本分支的条件, 即一个if...then...中的then部分,最终生成赋值表达式，即：<br/>
     * code operator value,示例:<br/>
     * count += 1;<br/>
     * value = 1;
     */
    private List<SourceRuleDimension> targets;
    /**
     * 是否与上一个分支同一组合，如果是，那么本条分支是else if分支,否则是新的if分支
     */
    private Boolean isGrouped = true;
    /**
     * 满足条件后是否继续执行下一个分支，否就是满足本分支条件后跳过后续分支，
     * 如果为false，则本分支条件满足后，会执行return.
     */
    private Boolean isContinue = true;
}
